#include<stdio.h>
#include<string.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>

int main()
{
  //c语言提供的
  printf("hello printf \n");
  fprintf(stdout,"hello fprintf\n");
  const char*s="hello fputs\n";
  fputs(s,stdout);

  //os提供的
  const char*ss="hello write\n";
  write(1,ss,strlen(ss));
  fork();




  /*
  if(argc!=2){
    return 2;
  }
  int fd=open("log.txt",O_CREAT|O_WRONLY|O_TRUNC);
  if(fd<0)
  {
    perror("open");
    return 1;
  }
  dup2(fd,1);//将log.txt文件描述符拷贝给stdout(1)，此时数组[1]里的内容就是log.txt文件描述符(地址)
  //数组[3]的内容还是log.txt的文件描述符
  fprintf(stdout,"%s\n",argv[1]);//由于stdout的下标位置只能是1，放在fprintf函数里也只能认出是1，但此时数组[1]的内容已经被log.txt的文件描述符替换了,所以数据打印到了log.txt
*/


  /*
  close(0);
  //这里的fd分配规则：最小的且没有被占用的文件描述符
  int fd=open("log.txt",O_RDONLY);
  
  printf("fd:%d\n",fd);
  char buffer[64];
  fgets(buffer,sizeof buffer,stdin);
  printf("%s\n",buffer);*/
  /*
  fprintf(stdout,"hello fprintf\n");
  const char*s="hello fwrite\n";

  fwrite(s,strlen(s),1,stdout);
*/
  //  close(fd);

}
